package produtos.produtos;

import java.sql.SQLException;
import java.util.Collection;

import org.apache.catalina.ha.session.SerializablePrincipal;

import produtos.DaoDB.IRepositorioProdutoDAO;
import produtos.DaoDB.RepositorioProdutoDaoDB;
import produtos.exceptions.ProdutoInexistenteException;
import produtos.exceptions.ProdutoInvalidoException;

public class Produto extends SerializablePrincipal{
	
	private String nomeProduto;
	private String codigo;
	private int quantidade;
	private float preco;
	private Fornecedor fornecedor;
	private Categoria categoria;
	private String sabor;
	private String tamanho;
	
	private IRepositorioProdutoDAO repositorioDAO = new RepositorioProdutoDaoDB();
	
	public String getNomeProduto() {
		return nomeProduto;
	}
	public void setNomeProduto(String nomeProduto) {
		this.nomeProduto = nomeProduto;
	}
	public String getCodigo() {
		return codigo;
	}
	public void setCodigo(String codigo) {
		this.codigo = codigo;
	}
	public int getQuantidade() {
		return quantidade;
	}
	public void setQuantidade(int quantidade) {
		this.quantidade = quantidade;
	}
		
	public float getPreco() {
		return preco;
	}
	public void setPreco(float preco) {
		this.preco = preco;
	}
	public Fornecedor getFornecedor() {
		return fornecedor;
	}
	public void setFornecedor(Fornecedor fornecedor) {
		this.fornecedor = fornecedor;
	}
	public Categoria getCategoria() {
		return categoria;
	}
	public void setCategoria(Categoria categoria) {
		this.categoria = categoria;
	}
	public String getSabor() {
		return sabor;
	}
	public void setSabor(String sabor) {
		this.sabor = sabor;
	}
	public String getTamanho() {
		return tamanho;
	}
	public void setTamanho(String tamanho) {
		this.tamanho = tamanho;
	}
	/**************************************************************/
	/*							MODEL						   	  */
	/**************************************************************/
	public void salvar() throws ProdutoInvalidoException, ClassNotFoundException, SQLException{
		if(repositorioDAO.isExiste(this.nomeProduto)){
			throw new ProdutoInvalidoException();
		}		
		repositorioDAO.inserirProdutos(this);
	}

	
	
 	public Collection<Produto> localizarProduto(String descricao)  throws ProdutoInexistenteException, ClassNotFoundException, SQLException, ProdutoInvalidoException{
 		if(repositorioDAO.isExiste(descricao)){
			return repositorioDAO.localizarProdutos(descricao); 			
 		}
	 	throw new ProdutoInexistenteException();
	}
 	
	public Collection <Produto> listarProduto() throws ClassNotFoundException, SQLException {
			return repositorioDAO.listarProdutos(); 			
 		}

	public void excluirProduto(String descricao) throws ClassNotFoundException, SQLException {
			repositorioDAO.excluirProduto(descricao);			
		}					
		
	public void alterarProduto(String descricao, String novaDescricao, float preco, int quantidade) throws ClassNotFoundException, SQLException, ProdutoInvalidoException{
		repositorioDAO.alterarProduto(descricao ,novaDescricao, preco, quantidade);
	}
}
